home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / cyberxxxsrc / cyberavi / txt / cyberaviopts.mod < prev    next >
Text File  |  1999-02-08  |  9KB  |  291 lines

  1. MODULE  CyberAVIOpts;
  2.  
  3. (* $IFNOT DEBUG *)
  4.   (* $StackChk- $OvflChk- $RangeChk- $CaseChk- $ReturnChk- $NilChk- $TypeChk- $OddChk- $ClearVars- *)
  5. (* $END *)
  6.  
  7. (* /// ------------------------------- "IMPORT" -------------------------------- *)
  8. IMPORT  b:=BestModeID,
  9.         d:=Dos,
  10.         e:=Exec,
  11.         g:=CyberAVIGlobals,
  12.         ics:=IconSupport,
  13.         ol:=OberonLib,
  14.         wb:=Workbench,
  15.         y:=SYSTEM;
  16. (* \\\ ------------------------------------------------------------------------- *)
  17.  
  18. (* /// --------------------------------- "VAR" --------------------------------- *)
  19. VAR     rda: d.RDArgsPtr;
  20.         out: d.FileHandlePtr;
  21.         oldOut: d.FileHandlePtr;
  22.  
  23.         pubScreen * : e.STRING;
  24.         askScrMode - : BOOLEAN;
  25.         screenModeID - : LONGINT;
  26.         force24 - : BOOLEAN;
  27.         grayScale - : BOOLEAN;
  28.         aga - : BOOLEAN;
  29.         ham8 - : BOOLEAN;
  30.         dither - : BOOLEAN;
  31.         cmap - : e.STRING;
  32.         bufferSize - : LONGINT;
  33.         startDelay - : LONGINT;
  34.         doLoop - : BOOLEAN;
  35.         maxFPS - : BOOLEAN;
  36.         noIndex - : BOOLEAN;
  37.         noSound - : BOOLEAN;
  38.         noVideo - : BOOLEAN;
  39.         doSkip - : BOOLEAN;
  40.         magnify - : LONGINT;
  41.         doStats - : BOOLEAN;
  42.         quiet - : BOOLEAN;
  43. (* /// "$IF RUNDEBUG" *)
  44.         debug - : BOOLEAN;
  45. (* \\\ $END *)
  46. (* \\\ ------------------------------------------------------------------------- *)
  47.  
  48. (* /// -------------------------------- "CONST" -------------------------------- *)
  49. CONST   defBufferSize=64;
  50.         defStartDelay=2;
  51.         defPubScreen="";
  52.         defMagnify=1;
  53.         defScrModeID="0x00000000";
  54. (* \\\ ------------------------------------------------------------------------- *)
  55.  
  56. (* /// ---------------------- "PROCEDURE CheckOptions()" ----------------------- *)
  57. PROCEDURE CheckOptions();
  58. BEGIN
  59.   IF startDelay>10 THEN startDelay:=10; END;
  60.   IF startDelay<0 THEN startDelay:=defStartDelay; END;
  61.   IF bufferSize>4096 THEN bufferSize:=4096; END;
  62.   IF bufferSize<=0 THEN bufferSize:=defBufferSize; END;
  63.   bufferSize:=bufferSize*1024;
  64.   IF magnify<-4 THEN magnify:=-4; END;
  65.   IF (magnify=-1) OR (magnify=0) OR (magnify=1) THEN magnify:=defMagnify; END;
  66.   IF magnify>4 THEN magnify:=4; END;
  67.   IF ~aga THEN aga:=g.agaOnly; END;
  68.   IF ham8 THEN
  69.     IF ~g.cgfxOnly THEN
  70.       aga:=TRUE;
  71.     ELSE
  72.       d.PrintF("You have no AGA chipset. The HAM8 option only works with AGA\n");
  73.       ham8:=FALSE;
  74.     END;
  75.   END;
  76.   IF dither THEN aga:=TRUE; END;
  77.   IF (pubScreen#"") & g.agaOnly THEN
  78.     d.PrintF("You have no CyberGraphX installed. The PUBSCREEN option only works with CyberGraphX\n");
  79.     pubScreen:="";
  80.   END;
  81.   IF (pubScreen#"") & aga THEN aga:=FALSE; END;
  82.   IF (pubScreen#"") & ham8 THEN
  83.     d.PrintF("You must specify only one option of HAM8 and PUBSCREEN. HAM8 display switched off!\n");
  84.     ham8:=FALSE;
  85.   END;
  86.   IF grayScale & ham8 THEN
  87.     d.PrintF("You must specify only one option of HAM8 and GRAY. Grayscale display switched off!\n");
  88.     grayScale:=FALSE;
  89.   END;
  90.   IF grayScale & dither THEN
  91.     d.PrintF("You must specify only one option of DITHER and GRAY. Grayscale display switched off!\n");
  92.     grayScale:=FALSE;
  93.   END;
  94.   IF noVideo & noSound THEN
  95.     d.PrintF("You must not specify both options NOVIDEO and NOSOUND. Video playback switched on!\n");
  96.     noVideo:=FALSE;
  97.   END;
  98.   IF ham8 & dither THEN
  99.     d.PrintF("You must specify only one option of HAM8 and DITHER. HAM8 display switched off!\n");
  100.     grayScale:=FALSE;
  101.   END;
  102.   IF noVideo & doStats THEN doStats:=FALSE; END;
  103.   IF doSkip & noIndex THEN
  104.     d.PrintF("You must specify only one option of SKIP and NOINDEX. Skipping switched off!\n");
  105.     doSkip:=FALSE;
  106.   END;
  107. (* /// "$IF RUNDEBUG" *)
  108.   IF debug THEN quiet:=FALSE; END;
  109. (* \\\ $END *)
  110. END CheckOptions;
  111. (* \\\ ------------------------------------------------------------------------- *)
  112.  
  113. (* /// --------------------- "PROCEDURE GetArgValueInt()" ---------------------- *)
  114. PROCEDURE GetArgValueInt(arg: d.ArgLong;
  115.                          def: LONGINT): LONGINT;
  116. BEGIN
  117.   IF arg#NIL THEN
  118.     RETURN arg[0]
  119.   ELSE
  120.     RETURN def;
  121.   END;
  122. END GetArgValueInt;
  123. (* \\\ ------------------------------------------------------------------------- *)
  124.  
  125. (* /// --------------------- "PROCEDURE GetArgValueStr()" ---------------------- *)
  126. PROCEDURE GetArgValueStr(arg: d.ArgString;
  127.                          def: e.STRING): e.STRING; (* $CopyArrays-*)
  128.  
  129. VAR     dummy: e.STRING;
  130.  
  131. BEGIN
  132.   IF arg#NIL THEN
  133.     COPY(arg^,dummy);
  134.     RETURN dummy;
  135.   ELSE
  136.     RETURN def;
  137.   END;
  138. END GetArgValueStr;
  139. (* \\\ ------------------------------------------------------------------------- *)
  140.  
  141. (* /// ---------------------- "PROCEDURE GetShellOpts()" ----------------------- *)
  142. PROCEDURE GetShellOpts * (template: ARRAY OF CHAR): d.ArgStringArray;
  143.  
  144. VAR     args: UNTRACED POINTER TO STRUCT(dummy: d.ArgsStruct)
  145.             files: d.ArgStringArray;
  146.             pubScreen: d.ArgString;
  147.             scrModeReq: d.ArgBool;
  148.             scrModeID: d.ArgString;
  149.             force24: d.ArgBool;
  150.             grayScale: d.ArgBool;
  151.             aga: d.ArgBool;
  152.             ham8: d.ArgBool;
  153.             dither: d.ArgBool;
  154.             cmap: d.ArgString;
  155.             bufferSize: d.ArgLong;
  156.             startDelay: d.ArgLong;
  157.             loop: d.ArgBool;
  158.             maxFPS: d.ArgBool;
  159.             noIndex: d.ArgBool;
  160.             noSound: d.ArgBool;
  161.             noVideo: d.ArgBool;
  162.             skip: d.ArgBool;
  163.             magnify: d.ArgLong;
  164.             stats: d.ArgBool;
  165.             quiet: d.ArgBool;
  166. (* /// "$IF RUNDEBUG" *)
  167.             debug: d.ArgBool;
  168. (* \\\ $END *)
  169.         END;
  170.         scrID: e.STRING;
  171. BEGIN
  172.   NEW(args);
  173.   rda:=d.ReadArgs(template,args^,NIL);
  174.   IF rda#NIL THEN
  175.     startDelay:=GetArgValueInt(args.startDelay,defStartDelay);
  176.     bufferSize:=GetArgValueInt(args.bufferSize,defBufferSize);
  177.     pubScreen:=GetArgValueStr(args.pubScreen,defPubScreen);
  178.     noVideo:=(args.noVideo=e.LTRUE);
  179.     noSound:=(args.noSound=e.LTRUE);
  180.     doLoop:=(args.loop=e.LTRUE);
  181.     askScrMode:=(args.scrModeReq=e.LTRUE);
  182.     scrID:=GetArgValueStr(args.scrModeID,defScrModeID);
  183.     aga:=(args.aga=e.LTRUE);
  184.     ham8:=(args.ham8=e.LTRUE);
  185.     dither:=(args.dither=e.LTRUE);
  186.     cmap:=GetArgValueStr(args.cmap,"");
  187.     grayScale:=(args.grayScale=e.LTRUE);
  188.     force24:=(args.force24=e.LTRUE);
  189.     maxFPS:=(args.maxFPS=e.LTRUE);
  190.     noIndex:=(args.noIndex=e.LTRUE);
  191.     doSkip:=(args.skip=e.LTRUE);
  192.     magnify:=GetArgValueInt(args.magnify,defMagnify);
  193.     doStats:=(args.stats=e.LTRUE);
  194.     quiet:=(args.quiet=e.LTRUE);
  195. (* /// "$IF RUNDEBUG" *)
  196.     debug:=(args.debug=e.LTRUE);
  197. (* \\\ $END *)
  198.     CheckOptions();
  199.     screenModeID:=b.CalcModeID(scrID);
  200.     RETURN args.files;
  201.   ELSE
  202.     y.SETREG(0,d.PrintFault(d.IoErr(),NIL));
  203.     RETURN NIL;
  204.   END;
  205. END GetShellOpts;
  206. (* \\\ ------------------------------------------------------------------------- *)
  207.  
  208. (* /// ----------------------- "PROCEDURE GetIconOpts()" ----------------------- *)
  209. PROCEDURE GetIconOpts * (icon: wb.DiskObjectPtr);
  210.  
  211. VAR     scrID: e.STRING;
  212.  
  213. BEGIN
  214.   bufferSize:=ics.GetTTValueInt(icon,"BUFFERSIZE",defBufferSize);
  215.   startDelay:=ics.GetTTValueInt(icon,"DELAY",defStartDelay);
  216.   force24:=ics.LookupToolType(icon,"FORCE24");
  217.   grayScale:=ics.LookupToolType(icon,"GRAY") OR ics.LookupToolType(icon,"GREY");
  218.   aga:=ics.LookupToolType(icon,"AGA");
  219.   ham8:=ics.LookupToolType(icon,"HAM8");
  220.   dither:=ics.LookupToolType(icon,"DITHER");
  221.   cmap:=ics.GetTTValueStr(icon,"CMAP","");
  222.   doLoop:=ics.LookupToolType(icon,"LOOP");
  223.   maxFPS:=ics.LookupToolType(icon,"MAXFPS");
  224.   noIndex:=ics.LookupToolType(icon,"NOINDEX");
  225.   noSound:=ics.LookupToolType(icon,"NOSOUND");
  226.   noVideo:=ics.LookupToolType(icon,"NOVIDEO");
  227.   pubScreen:=ics.GetTTValueStr(icon,"PUBSCREEN",defPubScreen);
  228.   quiet:=ics.LookupToolType(icon,"QUIET");
  229.   askScrMode:=ics.LookupToolType(icon,"SCREENMODEREQ");
  230.   scrID:=ics.GetTTValueStr(icon,"SCREENMODEID",defScrModeID);
  231.   doSkip:=ics.LookupToolType(icon,"SKIP");
  232.   magnify:=ics.GetTTValueInt(icon,"MAGNIFY",defMagnify);
  233.   doStats:=ics.LookupToolType(icon,"STATS");
  234. (* /// "$IF RUNDEBUG" *)
  235.   debug:=ics.LookupToolType(icon,"DEBUG");
  236. (* \\\ $END *)
  237.   IF out=NIL THEN
  238.     out:=d.Open(ics.GetTTValueStr(icon,"WINDOW","NIL:"),d.newFile);
  239.     IF out=NIL THEN out:=d.Open("NIL:",d.newFile); END;
  240.     oldOut:=d.SelectOutput(out);
  241.   END;
  242.   CheckOptions();
  243.   screenModeID:=b.CalcModeID(scrID);
  244. END GetIconOpts;
  245. (* \\\ ------------------------------------------------------------------------- *)
  246.  
  247. (* /// ----------------------- "PROCEDURE GetStdOpts()" ------------------------ *)
  248. PROCEDURE GetStdOpts * ();
  249. BEGIN
  250.   startDelay:=defStartDelay;
  251.   bufferSize:=defBufferSize;
  252.   pubScreen:="";
  253.   noVideo:=FALSE;
  254.   noSound:=FALSE;
  255.   doLoop:=FALSE;
  256.   askScrMode:=FALSE;
  257.   screenModeID:=b.CalcModeID(defScrModeID);
  258.   aga:=FALSE;
  259.   ham8:=FALSE;
  260.   dither:=FALSE;
  261.   cmap:="";
  262.   grayScale:=FALSE;
  263.   force24:=FALSE;
  264.   maxFPS:=FALSE;
  265.   noIndex:=FALSE;
  266.   doSkip:=FALSE;
  267.   magnify:=defMagnify;
  268.   doStats:=FALSE;
  269.   quiet:=FALSE;
  270.   IF ol.wbStarted & (out=NIL) THEN
  271.     out:=d.Open("NIL:",d.newFile);
  272.     oldOut:=d.SelectOutput(out);
  273.   END;
  274. (* /// "$IF RUNDEBUG" *)
  275.   debug:=FALSE;
  276. (* \\\ $END *)
  277. END GetStdOpts;
  278. (* \\\ ------------------------------------------------------------------------- *)
  279.  
  280. BEGIN
  281.   rda:=NIL;
  282.   out:=NIL;
  283. CLOSE
  284.   IF rda#NIL THEN d.FreeArgs(rda); END;
  285.   IF ol.wbStarted & (out#NIL) THEN
  286.     oldOut:=d.SelectOutput(oldOut);
  287.     d.OldClose(out);
  288.   END;
  289. END CyberAVIOpts.
  290.  
  291.